﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace QL_KhachSan
{
    public partial class frmQuanLy : Form
    {
        public int maNhanVien;

        private DataTable _dsPhong;

        internal DataTable DsPhong
        {
            get { return _dsPhong; }
            set { _dsPhong = value; }
        }
       
        public frmQuanLy()
        {
            InitializeComponent();
        }

        private void btn_XuatPhieu_Click(object sender, EventArgs e)
        {

        }

        private void btn_LapPhieuThueP_Click(object sender, EventArgs e)
        {
            Tab_lon.SelectedTabIndex = 0;
            
        }

        private void btn_ThayDoiQuiDinh_Click(object sender, EventArgs e)
        {
            frmThayDoiQuiDinh frm = new frmThayDoiQuiDinh();
            frm.ShowDialog();
        }

        private void thoátToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmQuanLy frmQL = new frmQuanLy();
            frmQL.Close();
            //
            Form1 frm = new Form1();
            frm.ShowDialog();
            //           
        }

        private void btn_LapPhieuThuePhong_Click(object sender, EventArgs e)
        {
            try
            {
                if (dtgv_LapPhieuPhong.SelectedRows.Count > 0)
                {
                    // Lap danh sach phong se thue
                    List<DataRow> lst = new List<DataRow>();
                    for (int i = 0; i < dtgv_LapPhieuPhong.SelectedRows.Count; i++)
                    {
                        int index = dtgv_LapPhieuPhong.SelectedRows[i].Index;
                        DataRow dr = DsPhong.Rows[index];
                        lst.Add(dr);
                    }

                    String str = "Thue cac phong sau:\n";
                    foreach (DataRow dr in lst)
                    {
                        str += dr["TenPhong"].ToString() + " " + dr["MaPhong"].ToString() + "\n";
                    }
                    MessageBox.Show(str);
                    
                    // Ghi vao csdl KhachHang : tao moi
                    DTO.CKHACHHANG kh = new DTO.CKHACHHANG();
                    if (txt_TenKH_LapPhieuThuePhong != null && txt_DiaChi_LapPhieu.Text != null && txt_CMND_LapPhieu.Text != null && txt_Tuoi_LapPhieuThuePhong != null)
                    {
                        kh.HoTen = txt_TenKH_LapPhieuThuePhong.Text;
                        kh.DiaChi = txt_DiaChi_LapPhieu.Text;
                        kh.Tuoi = int.Parse(txt_Tuoi_LapPhieuThuePhong.Text);
                        kh.CMND = txt_CMND_LapPhieu.Text;
                        if (!(BUS.XuLyKhachHangBUS.ThemKhachHang(kh)))
                        {
                            MessageBox.Show("Không thể thêm khách hàng. Lỗi nhập dữ liệu hay csdl bị hư");
                        }
                        // Ghi vao csdl PhieuThue : tao moi
                        DTO.CKHACHHANG temp = new DTO.CKHACHHANG();
                        temp = BUS.XuLyKhachHangBUS.TimKhachHangTheoSoCMND(kh.CMND);

                        foreach (DataRow dr in lst)
                        {
                            DTO.CPHIEUTHUE pt = new DTO.CPHIEUTHUE();
                            pt.BatDauThue = dateTime_Ngay_LạpPhieu.Value;
                            pt.MaKH = temp.MaKH;
                            pt.MaPhong = dr["MaPhong"].ToString();
                            pt.TinhTrang = 0;

                            BUS.XuLyPhieuThueBUS.ThemPhieuThue(pt);

                            // Update vao CSDL Phong : cac phong duoc cho thue voi ma khach hang nay
                            if (!(BUS.XuLyPhongBUS.SuaTinhTrangPhong(1, dr["MaPhong"].ToString())))
                                MessageBox.Show("Lỗi csdl hay nhập tình trạng phòng không đúng");
                        }
                        frmQuanLy_Load(sender, e);
                    }
                    else
                        MessageBox.Show("Thông tin khách hàng không được để trống !");

                }
                else
                {
                    MessageBox.Show("Ban chua chon phong");
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Kiem tra lai cac truong nhap du lieu. Tuoi phai la so nguyen");
            }
        }
        public void Doi(DataTable dt)
        {

            dtgv_LapPhieuPhong.Rows.Clear();           
            int stt = 1;
            foreach (DataRow dr in dt.Rows)
            {
                CPHONG p = new CPHONG();
                p.MaPhong = dr["MaPhong"].ToString();
                p.TenPhong = dr["TenPhong"].ToString();
                p.MaLoaiPhong = dr["MaLoaiPhong"].ToString();
                p.TinhTrang = int.Parse(dr["TinhTrang"].ToString());
                String tt = "Đang thuê";
                if (p.TinhTrang == 0)
                    tt = "Trống";
                String[] row = new String[] { stt++.ToString(), p.TenPhong, p.MaLoaiPhong, tt, p.MaPhong };
                dtgv_LapPhieuPhong.Rows.Add(row);             
            }
        }
        
        #region Load danh sách khách hàng
        public void LoadDSKhachHang()
        {
            dtgv_DanhSachKhachHang.Rows.Clear();
            int stt = 1;
            DataTable dt = new DataTable();
            dt = XuLyKhachHangBUS.TimDSKhachHang();

           
            foreach (DataRow dr in dt.Rows)
            {
                CKHACHHANG kh = new CKHACHHANG();
                kh.Tuoi = int.Parse(dr["Tuoi"].ToString());
               kh.MaKH = int.Parse(dr["MaKH"].ToString());
                kh.HoTen = dr["HoTen"].ToString();
                kh.DiaChi = dr["DiaChi"].ToString();
                kh.CMND = dr["CMND"].ToString();
                CPHIEUTHUE pt = XuLyPhieuThueBUS.TimMotPhieuThueTheoMaKH(int.Parse(dr["MaKH"].ToString()));                               
                //
                String[] row = new String[] { stt++.ToString(),kh.HoTen,kh.MaKH.ToString(),kh.Tuoi.ToString(),kh.CMND, kh.DiaChi,pt.MaPhong,pt.BatDauThue.ToShortDateString()};
                dtgv_DanhSachKhachHang.Rows.Add(row);
            }
        }
        #endregion
        #region tìm kiếm khách hàng
        public void timKiemKhachHang(CKHACHHANG kh)
        {
            dtgv_DanhSachKhachHang.Rows.Clear();
                int stt = 1;                          
                CPHIEUTHUE pt = XuLyPhieuThueBUS.TimMotPhieuThueTheoMaKH(kh.MaKH);                
                String[] row = new String[] { stt++.ToString(), kh.HoTen, kh.MaKH.ToString(), kh.Tuoi.ToString(), kh.CMND, kh.DiaChi, pt.MaPhong, pt.BatDauThue.ToShortDateString() };
                dtgv_DanhSachKhachHang.Rows.Add(row);            
        }
        #endregion

        private void frmQuanLy_Load(object sender, EventArgs e)
        {
            dateTime_Ngay_LạpPhieu.Text = DateTime.Now.ToShortDateString();
            DsPhong = BUS.XuLyPhongBUS.TimDSPhongTrong();
            Doi(DsPhong);
            LoadDSKhachHang();
            LoadComboxLoaiPhong();
            LoadDanhSachTatCaPhong();
            LoadTatCaNhanVien();
            LoadMaNVLenCBX();
            LoadHoaDon();
            LoadComboboxLoaiPhongHoaDon();
            CNHANVIEN nv = XuLyNhanVienBuS.TimNhanVienTheoMaNV(maNhanVien);
            if (nv.MaLoaiNhanVien == "nv")
            {
                tabItem_QuanLyNhanVien.Visible = false;
                btnThongKe.Enabled = false;
                lblThongKe.Enabled = false;
                btnThayDoiQuiDinh.Enabled = false;
                lblThayDoiQuiDinh.Enabled = false;                                
            }                                 
        }
        public void LoadHoaDon()
        {
            //dtk_NgayTra.Text = DateTime.Now.ToShortDateString();
            //DataTable dt = XuLyHoaDonBUS.TimDSKhachHang();
            //dtgv_HoaDon.DataSource = dt;
        }
        private void labelX4_Click(object sender, EventArgs e)
        {

        }

        private void btn_CapNhatKH_Click(object sender, EventArgs e)
        {
            if (dtgv_DanhSachKhachHang.SelectedRows.Count > 0)
            {
                DTO.CKHACHHANG kh = new DTO.CKHACHHANG();
                int MaKH = int.Parse(txt_MaKhachHang.Text);
                kh.MaKH = int.Parse(txt_MaKhachHang.Text);
                kh.HoTen = txt_TenKhachHang.Text;
                kh.DiaChi = txt_DiaChi.Text;
                kh.CMND = txt_CMND.Text;
                kh.Tuoi = int.Parse(txt_Tuoi_KH.Text);

                XuLyKhachHangBUS.SuaTTKhachHang(kh, MaKH);
                LoadDSKhachHang();
               // frmNVSuaKH_Load(sender, e);
            }
            else
            {
                MessageBox.Show("Ban chua chon khach hang nao ca");
            }
        }

        private void dtgv_DanhSachKhachHang_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            
           // DataRow dr = DsKH.Rows[index];

            //txtMaKH.Text = dr["MaKH"].ToString();
            //txtTenKH.Text = dr["HoTen"].ToString();
            //txtdiachi.Text = dr["DiaChi"].ToString();
            //txtCMND.Text = dr["CMND"].ToString();
            //txtTuoi.Text = dr["Tuoi"].ToString();
        }

        private void dtgv_DanhSachKhachHang_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            string ma = dtgv_DanhSachKhachHang.CurrentRow.Cells["MaKhachHang"].Value.ToString();
            txt_MaKhachHang.Text = ma;
            if (ma != null)
            {
                CKHACHHANG kh = XuLyKhachHangBUS.TimKhachHangTheoMaKH(int.Parse(ma));
               // List<DTO.CPHIEUTHUE> lstPT = new List<DTO.CPHIEUTHUE>();
               // lstPT = XuLyPhieuThueBUS.TimPhieuThueTheoMaKH(int.Parse(ma));
             

                txt_MaKhachHang.Text = kh.MaKH.ToString();
                txt_TenKhachHang.Text = kh.HoTen;
                txt_DiaChi.Text = kh.DiaChi;
                txt_CMND.Text = kh.CMND;
                txt_Tuoi_KH.Text = Convert.ToString(kh.Tuoi);
            }
        }

        private void btn_XoaKhachHang_Click(object sender, EventArgs e)
        {
            string ma = dtgv_DanhSachKhachHang.CurrentRow.Cells["MaKhachHang"].Value.ToString();
            if (dtgv_DanhSachKhachHang.SelectedRows.Count > 0)
            {
                

                if (!(XuLyKhachHangBUS.XoaKhachHang(int.Parse(ma))))
                    MessageBox.Show("Loi xay ra. Khong the xoa khach hang. Kiem tra file CSDL");
                // Huy phieu thue cua KH nay
                List<DTO.CPHIEUTHUE> lstPT = new List<DTO.CPHIEUTHUE>();
                lstPT = XuLyPhieuThueBUS.TimPhieuThueTheoMaKH(int.Parse(ma));
                foreach (DTO.CPHIEUTHUE pt in lstPT)
                {
                    // Xoa phieu thue
                    if (!(XuLyPhieuThueBUS.XoaPhieuThue(pt.MaPhieu)))
                    {
                        MessageBox.Show("Loi xay ra. Khong the xoa cac phieu thue. Kiem tra file CSDL");
                    }
                    // Chuyen tinh trang cac phong thue cua KH lai 0
                    if (!(XuLyPhongBUS.SuaTinhTrangPhong(0, pt.MaPhong)))
                    {
                        MessageBox.Show("Loi xay ra. Khong the sua tinh trang phong. Kiem tra file CSDL");
                    }
                }

            }
            else
                MessageBox.Show("Ban chua chon khach hang");

            LoadDSKhachHang();
        }

        private void btn_TraCuu_Click(object sender, EventArgs e)
        {
            if (txt_TenKhachHang.Text == null)
            {
                MessageBox.Show("Bạn hãy nhập thông tin tìm kiếm");
            }
            else
            {
                try
                {
                    DTO.CKHACHHANG kh = new DTO.CKHACHHANG();
                    List<DTO.CPHIEUTHUE> lpt = new List<DTO.CPHIEUTHUE>();

                    if (txt_TenKhachHang.Text != null)
                    {
                        kh = XuLyKhachHangBUS.TimKhachHangTheoTen(txt_TenKhachHang.Text.ToString());

                        lpt = XuLyPhieuThueBUS.TimPhieuThueTheoMaKH(kh.MaKH);
                    }                    
                    timKiemKhachHang(kh);

                    //String Phong = "";
                    //foreach (DTO.CPHIEUTHUE pt in lpt)
                    //{
                    //    Phong += pt.MaPhong.ToString();
                    //    lblNgayThue.Text = pt.BatDauThue.ToShortDateString();
                    //}
                    //lblPhong.Text = Phong;
                }
                catch (System.Exception)
                {
                    MessageBox.Show("Khách hàng này không tồn tại");
                }
            }
        }

        private void btnLoad_Click(object sender, EventArgs e)
        {
            LoadDSKhachHang();
        }
        public void LoadComboxLoaiPhong()
        {            
            cbx_MaLoaiPhong.DataSource = XuLyLoaiPhongBUS.DanhSachLoaiPhong();
            cbx_MaLoaiPhong.ValueMember = "MaLoaiPhong";
            cbx_MaLoaiPhong.DisplayMember = "LoaiPhong";
        }
        public void LoadComboboxLoaiPhongHoaDon()
        {            
            cbxMaPhong.DataSource = XuLyPhieuThueBUS.danhSachPhieuThue();
            cbxMaPhong.DisplayMember = "MaPhong";
            cbxMaPhong.ValueMember = "MaKH";
        }
        public void LoadDanhSachTatCaPhong()
        {
            DataTable dt = XuLyPhongBUS.DanhSachPhong();
            dtgv_DanhSachPhong.Rows.Clear();            
            int stt = 1;
            foreach (DataRow dr in dt.Rows)
            {
                CPHONG p = new CPHONG();
                p.MaPhong = dr["MaPhong"].ToString();
                p.TenPhong = dr["TenPhong"].ToString();
                p.MaLoaiPhong = dr["MaLoaiPhong"].ToString();
                p.TinhTrang = int.Parse(dr["TinhTrang"].ToString());
                String tt = "Đang thuê";
                if (p.TinhTrang == 0)

                    tt = "Trống";
                String[] row = new String[] { stt++.ToString(), p.TenPhong, p.MaLoaiPhong, tt, p.MaPhong };
                // dtgv_LapPhieuPhong.Rows.Add(row);
                dtgv_DanhSachPhong.Rows.Add(row);
            }
        }
        private void btn_ThemPhong_Click(object sender, EventArgs e)
        {
            if (txt_TenPhong.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập tên phòng");
            }
            else
            {
                CPHONG p = new CPHONG();
                p.MaLoaiPhong = cbx_MaLoaiPhong.SelectedValue.ToString();
                p.MaPhong = txt_MaPhong.Text;
                p.TenPhong = txt_TenPhong.Text;
                p.TinhTrang = 0;
                XuLyPhongBUS.ThemPhong(p);
            }
            LoadDanhSachTatCaPhong();
        }
        private void btn_XemDoanhThu_Click(object sender, EventArgs e)
        {
            frmXemDoanhThu frm = new frmXemDoanhThu();
            frm.ShowDialog();
        }

        private void btn_CapNhatPhong_Click(object sender, EventArgs e)
        {
            if (dtgv_DanhSachPhong.SelectedRows.Count > 0)
            {
                CPHONG p = new CPHONG();
                string ma = txt_MaPhong.Text;
                p.MaPhong = ma;
                p.TenPhong = txt_TenPhong.Text.ToString();
                p.MaLoaiPhong = cbx_MaLoaiPhong.SelectedValue.ToString();
                XuLyPhongBUS.SuaTTPhong(p, ma);
                
            }
            else
            {
                MessageBox.Show("Mời bạn nhập thông tin");
            }
            LoadDanhSachTatCaPhong();
        }

        private void dtgv_DanhSachPhong_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            string ma = dtgv_DanhSachPhong.CurrentRow.Cells["MaPhong"].Value.ToString();
            txt_MaPhong.Text = ma;
            if (ma != null)
            {
                CPHONG p = XuLyPhongBUS.TimPhongTheoMaPhong(ma);
                CLOAIPHONG lp = XuLyLoaiPhongBUS.TimLoaiPhongTheoMaLoaiPhong(p.MaLoaiPhong);
              
               
                txt_MaPhong.Text = p.MaPhong;
                txt_TenPhong.Text = p.TenPhong;
                cbx_MaLoaiPhong.Text = lp.LoaiPhong;
                              
               
            }
        }

        private void btn_XoaPhong_Click(object sender, EventArgs e)
        {
            string ma = dtgv_DanhSachPhong.CurrentRow.Cells["MaPhong"].Value.ToString();
            txt_MaPhong.Text = ma;
            CPHONG p = XuLyPhongBUS.TimPhongTheoMaPhong(ma);
            if (p.TinhTrang == 0)
            {
               
                if (MessageBox.Show("Bạn có chắc xóa hay không????", "thông báo", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK)
                {
                    XuLyPhongBUS.XoaPhong(ma);
                }
                LoadDanhSachTatCaPhong();
            }
            else
            {
                MessageBox.Show("Phòng này đang có người thuê");
            }
        }
     
        private void btn_TraCuuPhong_Click(object sender, EventArgs e)
        {
            if (txt_MaPhong.Text == null)
            {
                MessageBox.Show("Tên Khách hàng không để trống");
            }
            else
            {
                dtgv_DanhSachPhong.Rows.Clear();
                string maP = txt_MaPhong.Text;
                CPHONG p= XuLyPhongBUS.TimPhongTheoMaPhong(maP);
                int stt = 1;
                String tt = "Đang thuê";
                if (p.TinhTrang == 0)

                    tt = "Trống";
                String[] row = new String[] { stt++.ToString(), p.TenPhong, p.MaLoaiPhong, tt, p.MaPhong };
                 dtgv_DanhSachPhong.Rows.Add(row);
            }
        }

        private void buttonX1_Click(object sender, EventArgs e)
        {
            LoadDanhSachTatCaPhong();
        }
        #region Load tất cả các nhân viên
        public void LoadTatCaNhanVien()
        {
            dtgv_DSNhanVien.Rows.Clear();
            DataTable dt = new DataTable();
            dt = XuLyNhanVienBuS.TimToanBoNhanVien("nv");
            int stt = 1;
            foreach (DataRow dr in dt.Rows)
            {
                CNHANVIEN nv = new CNHANVIEN();
                nv.HoTen = dr["HoTen"].ToString();
                nv.Tuoi = int.Parse(dr["Tuoi"].ToString());
                nv.MaNhanVien = int.Parse(dr["MaNhanVien"].ToString());
                nv.DiaChi = dr["DiaChi"].ToString();
                nv.MaLoaiNhanVien = dr["MaLoaiNV"].ToString();
                String[] row = new String[] { stt++.ToString(),nv.MaNhanVien.ToString(),nv.HoTen ,nv.Tuoi.ToString(),nv.DiaChi};
                dtgv_DSNhanVien.Rows.Add(row);
            }
        }
        #endregion
        #region Load mã nhân viên lên CBX
        public void LoadMaNVLenCBX()
        {
           
            cbx_TimMaNV.DataSource = XuLyNhanVienBuS.TimToanBoNhanVien("nv");
            cbx_TimMaNV.ValueMember = "MaNhanVien";
            cbx_TimMaNV.DisplayMember = "MaNhanVien";

          }
        #endregion
        private void btn_ThemNV_Click(object sender, EventArgs e)
        {
            if (txt_TenNV.Text == "" || txt_TuoiNV.Text == "" || txt_DiaChiNV.Text == "")
            {
                MessageBox.Show("Bạn nhập thông tin chưa đủ");
            }
            else
            {
                CNHANVIEN nv = new CNHANVIEN();
                nv.HoTen = txt_TenNV.Text;
                nv.DiaChi = txt_DiaChiNV.Text;
                nv.Tuoi = int.Parse(txt_TuoiNV.Text);
                nv.MaLoaiNhanVien = "nv";
               if(! (XuLyNhanVienBuS.ThemNhanVien(nv)))
               {
                   MessageBox.Show("Thêm nhân viên thất bại.");
               }
                else{
                    LoadTatCaNhanVien();
                   MessageBox.Show("Thêm nhân viên thành công.");
               }
            }
        }

        private void dtgv_DSNhanVien_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            string ma = dtgv_DSNhanVien.CurrentRow.Cells["MaNV"].Value.ToString();
           
            if (ma != null)
            {
                CNHANVIEN nv = XuLyNhanVienBuS.TimNhanVienTheoMaNV(int.Parse(ma));
                txt_TenNV.Text = nv.HoTen;
                txt_TuoiNV.Text = nv.Tuoi.ToString();
                txt_DiaChiNV.Text = nv.DiaChi;
                
            }
        }

        private void btn_CapNhatNV_Click(object sender, EventArgs e)
        {
            string ma = dtgv_DSNhanVien.CurrentRow.Cells["MaNV"].Value.ToString();
            int manv = int.Parse(ma);
            if (dtgv_DSNhanVien.SelectedCells.Count > 0)
            {
                CNHANVIEN nv = new CNHANVIEN();
                nv.HoTen = txt_TenNV.Text;
                nv.DiaChi = txt_DiaChiNV.Text;
                nv.Tuoi = int.Parse(txt_TuoiNV.Text);
                nv.MaLoaiNhanVien = "nv";
                XuLyNhanVienBuS.SuaTTNhanVien(nv, manv);
                MessageBox.Show("Cập nhât thành công.");
                LoadTatCaNhanVien();
            }
            else
            {
                MessageBox.Show("Cập nhât thất bại.");
            }
        }

        private void btn_XoaNV_Click(object sender, EventArgs e)
        {
            string ma = dtgv_DSNhanVien.CurrentRow.Cells["MaNV"].Value.ToString();
            if (dtgv_DSNhanVien.SelectedCells.Count > 0)
            {
               if( MessageBox.Show("Bạn có muốn xóa không?", "Thông Báo!!!!", MessageBoxButtons.OKCancel)== System.Windows.Forms.DialogResult.OK)
                {
                    XuLyNhanVienBuS.XoaNhanVien(int.Parse(ma));
                    LoadTatCaNhanVien();
                }
            }
            else
            {
                MessageBox.Show("Xóa nhân viên thất bại.");
            }
        }

        private void btn_TraCuuNV_Click(object sender, EventArgs e)
        {
            dtgv_DSNhanVien.Rows.Clear();
            int ma = int.Parse(cbx_TimMaNV.SelectedValue.ToString());
             CNHANVIEN nv =  XuLyNhanVienBuS.TimNhanVienTheoMaNV(ma);
                      
            int stt = 1;
            String[] row = new String[] { stt++.ToString(), nv.MaNhanVien.ToString(), nv.HoTen, nv.Tuoi.ToString(), nv.DiaChi };
            dtgv_DSNhanVien.Rows.Add(row);
        }

        private void btn_XemDanhSachNV_Click(object sender, EventArgs e)
        {
            LoadTatCaNhanVien();
        }

        private void btn_ThanhToan_Click(object sender, EventArgs e)
        {
            //if (dtgv_HoaDon.SelectedRows.Count > 0)
            //{
                // Xac nhan thanh toan
                DialogResult result1 = MessageBox.Show("Bạn có chắc tiếp tục không????.", "Chu y", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result1 == DialogResult.Yes)
                {
                    try
                    {
                        long tongtien = long.Parse(txtTongTien.Text);
                        
                        long tiendua =0;;
                        if (txtTienKhachDua.Text == "")
                        {
                            tiendua = 0;
                        }
                        else
                        {
                            tiendua = long.Parse(txtTienKhachDua.Text);
                        }
                        if (tongtien > tiendua)
                        {
                            MessageBox.Show("Tiền khách đưa phải lên hơn hay bằng.");
                        }
                        else
                        {

                            string maP = cbxMaPhong.SelectedItem.ToString();                            
                            int MaKH = int.Parse(cbxMaPhong.SelectedValue.ToString());

                            if (!(XuLyPhieuThueBUS.SuaTTPhieuThueTheoMaKH(1, MaKH)))
                            {
                                MessageBox.Show("Khong the lap hoa don. Kiem tra lai ket noi CSDL");
                            }
                            // Sua tinh trang trong Phong
                            CPHONG p = XuLyPhongBUS.TimPhongTheoMaPhong(maP);
                            XuLyPhongBUS.SuaTinhTrangPhong(0, maP);

                            // Luu vao bang HoaDon


                            CPHIEUTHUE pt = XuLyPhieuThueBUS.TimMotPhieuThueTheoMaKH(MaKH);
                            DTO.CHOADON hd = new DTO.CHOADON();
                            hd.TenKH = txtTenKH_HoaDon.Text;
                            hd.MaKH = MaKH;
                            hd.ThanhTien = long.Parse(txtTongTien.Text);
                            hd.NgayLap = DateTime.Now;
                            TimeSpan ngay = hd.NgayLap - pt.BatDauThue;
                            hd.SoNgayThue = ngay.Days;

                            if (!(XuLyHoaDonBUS.ThemHoaDon(hd)))
                            {
                                MessageBox.Show("Co loi xay ra. Kiem tra lai ket noi CSDL");
                            }
                            txtTienDu.Text = (tiendua - tongtien).ToString();

                            // Luu vao bang BaoCao
                            DTO.CBAOCAO bc = new DTO.CBAOCAO();
                            bc = XuLyBaoCaoBUS.TimBaoCao(hd.NgayLap);
                            bool TonTai = false;
                            if (bc.DoanhThuNgay != 0)
                            {
                                TonTai = true;
                            }
                            bc.NgayLapBaoCao = DateTime.Now;
                            int Phong = 1;
                            bc.SoLuongKhach += Phong * 4;
                            bc.SoLuongPhong += Phong;
                            bc.DoanhThuNgay += long.Parse(txtTongTien.Text);
                            int MaBC = bc.MaBaoCao;
                            if (TonTai)
                            {
                                XuLyBaoCaoBUS.SuaBaoCao(bc, MaBC);
                            }
                            else
                                XuLyBaoCaoBUS.ThemBaoCao(bc);

                            LoadHoaDon();
                        }
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Co loi xay ra. Kiem tra lai file CSDL");
                    }
                }
            //}
            //else
            //{
            //    MessageBox.Show("Ban chua chon khach hang.");
            //}
        }

        //private void dtgv_HoaDon_CellClick(object sender, DataGridViewCellEventArgs e)
        //{
        //    try
        //    {

        //        int index = dtgv_HoaDon.SelectedRows[0].Index;
        //        DataTable dt = XuLyHoaDonBUS.TimDSKhachHang();

        //        DataRow dr = dt.Rows[index];
        //        // Luu maKH vao txtMaKH
        //        //cbx_MaKhachHang.Text = dtgv_HoaDon.CurrentRow.Cells["MaKH"].Value.ToString();
               
        //        txtTenKH_HoaDon.Text = dr["HoTen"].ToString();
        //        int MaKH = int.Parse(dr["MaKH"].ToString());
        //    //    int MaKH = int.Parse(txtMaKH.Text);
        //       // MaPhong = new List<string>();

        //        int NgayThue = 0; long ThanhTien = 0;

        //        List<DTO.CPHIEUTHUE> lpt = new List<DTO.CPHIEUTHUE>();
        //        lpt = XuLyPhieuThueBUS.TimPhieuThueTheoMaKH(MaKH);
        //        foreach (DTO.CPHIEUTHUE pt in lpt)
        //        {
        //            // Tinh so ngay thue phong
        //            //// lay ngay BD tu PHIEUTHUE
        //            //// tinh so ngay thue
        //            TimeSpan diff = DateTime.Now - pt.BatDauThue;
        //            int temp = diff.Hours;
        //            NgayThue = temp;
        //            // Tinh tong tien phai tra
        //            //// lay thong tin phong : loai phong
        //            DTO.CPHONG p = new DTO.CPHONG();
        //           // MaPhong.Add(pt.MaPhong);
        //            p = XuLyPhongBUS.TimPhongTheoMaPhong(pt.MaPhong);
        //            DTO.CLOAIPHONG lp = new DTO.CLOAIPHONG();
        //            lp = XuLyLoaiPhongBUS.TimLoaiPhongTheoMaLoaiPhong(p.MaLoaiPhong);
        //            //// lay gia tien cua loai phong
        //            long Tien = lp.GiaTien * temp;
        //            ThanhTien += Tien;
        //            //txt_MaPhong_HD.Text = p.MaPhong;
        //        }
        //       // lblNgay.Text = NgayThue.ToString();
        //        //lblnPhong.Text = lpt.Count.ToString();

        //        //// giam gia khi so phong thue = 3 : 10% ; > 3 : 15%
        //        if (lpt.Count == 3)
        //        {
        //            ThanhTien = ThanhTien - (ThanhTien / 10);
        //        }
        //        else if (lpt.Count > 3)
        //        {
        //            ThanhTien = ThanhTien - ((ThanhTien * 15) / 100);
        //        }
              
        //        txtTongTien.Text = ThanhTien.ToString();
        //    }
        //    catch (System.Exception)
        //    {

        //    }
        //}

        private void tabControlPanel3_Click(object sender, EventArgs e)
        {
            
        }

        private void cbxMaPhong_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (int.Parse(cbxMaPhong.SelectedValue.ToString()) != 0)
            {
                int maKH = int.Parse(cbxMaPhong.SelectedValue.ToString());
                CKHACHHANG kh = XuLyKhachHangBUS.TimKhachHangTheoMaKH(maKH);
                txtTenKH_HoaDon.Text = kh.HoTen;
                txtDiaChi_HoaDon.Text = kh.DiaChi;
                txtCMND_HoaDon.Text = kh.CMND;
                txtTuoi_HoaDon.Text = kh.Tuoi.ToString();
                //
                int GioThue = 0; 
                long ThanhTien = 0;
                //
                List<DTO.CPHIEUTHUE> lpt = new List<DTO.CPHIEUTHUE>();
                lpt = XuLyPhieuThueBUS.TimPhieuThueTheoMaKH(int.Parse(cbxMaPhong.SelectedValue.ToString()));
                foreach (DTO.CPHIEUTHUE pt in lpt)
                {
                    TimeSpan diff = DateTime.Now - pt.BatDauThue;
                    int temp = diff.Hours;
                    GioThue = temp;
                    // Tinh tong tien phai tra
                    // lay thong tin phong : loai phong
                    DTO.CPHONG p = new DTO.CPHONG();
                    // MaPhong.Add(pt.MaPhong);
                    p = XuLyPhongBUS.TimPhongTheoMaPhong(pt.MaPhong);
                    DTO.CLOAIPHONG lp = new DTO.CLOAIPHONG();
                    lp = XuLyLoaiPhongBUS.TimLoaiPhongTheoMaLoaiPhong(p.MaLoaiPhong);
                    //// lay gia tien cua loai phong
                    long Tien = lp.GiaTien * temp;
                    ThanhTien += Tien;
                }
                //// giam gia khi so phong thue = 3 : 10% ; > 3 : 15%
                if (lpt.Count == 3)
                {
                    ThanhTien = ThanhTien - (ThanhTien / 10);
                }
                else if (lpt.Count > 3)
                {
                    ThanhTien = ThanhTien - ((ThanhTien * 15) / 100);
                }

                txtTongTien.Text = ThanhTien.ToString();
            }
        }

        private void txtTienKhachDua_Leave(object sender, EventArgs e)
        {
            int tiendu=int.Parse(txtTienKhachDua.Text) - int.Parse(txtTongTien.Text);
            txtTienDu.Text = tiendu.ToString();
        }
    }
}
